﻿using System;
using System.Linq;
using DevExpress.XtraEditors;
using DevExpress.XtraTreeList.Nodes;

namespace Management
{
    public partial class frmKullaniciMenu : XtraForm
    {
        public frmKullaniciMenu()
        {
            InitializeComponent();
        }

        private void frmKullaniciMenu_Load(object sender, EventArgs e)
        {
            treeList1.Columns[0].OptionsColumn.AllowEdit = false;
            treeList1.Columns[1].OptionsColumn.AllowEdit = false;
            treeList1.Columns[2].OptionsColumn.AllowEdit = true;
        }

        private void ShowListe(string filtre)
        {
            frmListe liste = new frmListe();
            liste.ListeTipi = frmListe.ListeTipleri.KullaniciListesi;
            liste.SetValueControl = txtKodu;
            if (liste.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string kod = txtKodu.Tag.ToString();
                using (MikroEntities ent = new MikroEntities())
                {
                    Kullanici kul = ent.Kullanicilar.Where(x => x.Kodu == kod).FirstOrDefault();
                    if (kul != null)
                    {
                        txtKodu.Text = kul.Kodu;
                        txtAdi.Text = kul.Adi;

                    }
                }
            }
        }

        private void txtKodu_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
            ShowListe(txtKodu.Text);
        }

        private void AltNode(TreeListNode node, int kullID)
        {
            foreach (TreeListNode n in node.Nodes)
            {
                if (Convert.ToBoolean(n.GetValue(treeList1.Columns[2])) == true)
                {
                    Kaydet(Convert.ToInt32(n.GetValue(treeList1.Columns[0])), kullID, n.GetValue(treeList1.Columns[1]).ToString());
                }
                if (n.Nodes.Count > 0)
                {
                    AltNode(n, kullID);
                }
            }
        }

        private void Kaydet(int menuNo, int kullaniciId, string adi)
        {
            using (MikroEntities ent = new MikroEntities())
            {
                ent.AddToMenuler(new Menu()
                {
                    KullaniciId = kullaniciId,
                    Kullanilabilir = true,
                    MenuKod = menuNo,
                    Sifreli = true,
                    Aciklama = adi
                });
                ent.SaveChanges();
            }
        }

        private void simpleButton1_Click(object sender, EventArgs e)
        {
            int kullID = -1;
            using (MikroEntities ent = new MikroEntities())
            {
                Kullanici kul = ent.Kullanicilar.Where(x => x.Kodu == txtKodu.Text).FirstOrDefault();
                if (kul != null)
                {
                    kullID = kul.ID;
                    foreach (var m in ent.Menuler.Where(x => x.KullaniciId == kullID).ToList())
                    {
                        ent.DeleteObject(m);
                    }
                }
                ent.SaveChanges();
            }
            if (kullID > -1)
            {
                foreach (TreeListNode n in treeList1.Nodes)
                {
                    if (Convert.ToBoolean(n.GetValue(treeList1.Columns[2])) == true)
                    {
                        Kaydet(Convert.ToInt32(n.GetValue(treeList1.Columns[0])), kullID, n.GetValue(treeList1.Columns[1]).ToString());
                    }
                    AltNode(n, kullID);
                }
            }
            this.Close();
        }

    }
}
